﻿using System;
using System.Web.UI;

namespace SisEagle.View.Web.Pedidos
{
    public partial class Confirma_Produto_Carrinho : System.Web.UI.Page
    {

        #region Singleton
        private SisEagleBO.ProdutosBO _ProdutosBusiness;
        private SisEagleBO.ProdutosBO ProdutosBusiness
        {
            get
            {
                if (_ProdutosBusiness == null)
                    _ProdutosBusiness = new SisEagleBO.ProdutosBO();

                return _ProdutosBusiness;
            }
        }

        private SisEagleBO.ControleEstoqueBO _ControleEstoqueBusiness;
        private SisEagleBO.ControleEstoqueBO ControleEstoqueBusiness
        {
            get
            {
                if (_ControleEstoqueBusiness == null)
                    _ControleEstoqueBusiness = new SisEagleBO.ControleEstoqueBO();

                return _ControleEstoqueBusiness;
            }
        }

        private SisEagleBO.CategoriasBO _CategoriasBusiness;
        private SisEagleBO.CategoriasBO CategoriasBusiness
        {
            get
            {
                if (_CategoriasBusiness == null)
                    _CategoriasBusiness = new SisEagleBO.CategoriasBO();

                return _CategoriasBusiness;
            }
        }

        private SisEagleBO.ControleVendasBO _ControleVendasBusiness;
        private SisEagleBO.ControleVendasBO ControleVendasBusiness
        {
            get
            {
                if (_ControleVendasBusiness == null)
                    _ControleVendasBusiness = new SisEagleBO.ControleVendasBO();

                return _ControleVendasBusiness;
            }
        }

        private SisEagleBO.ImagensBO _ImagensBusiness;
        private SisEagleBO.ImagensBO ImagensBusiness
        {
            get
            {
                if (_ImagensBusiness == null)
                    _ImagensBusiness = new SisEagleBO.ImagensBO();

                return _ImagensBusiness;
            }
        }

        #endregion

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!(Request.QueryString["codCarrinho"] == null))
            {
                lblCodCarrinhoCompras.Text = Request.QueryString["codCarrinho"];
            }
            else
            {
                //não selecionou carrinho de compra
                Response.Redirect("CarrinhoCompra.aspx");
            }

            if (!(Request.QueryString["CodProduto"] == null))
            {

                //dados produto
                SisEagleVO.ProdutosVO objProdutosVO = new SisEagleVO.ProdutosVO();
                objProdutosVO = ProdutosBusiness.Pega_Dados_Produto(Request.QueryString["CodProduto"].ToString());
                
                lblCodigoProduto.Text = objProdutosVO.CodProduto.ToString();
                lblNomeProduto.Text = objProdutosVO.NomeProduto;
                lblDescricao.Text = objProdutosVO.Descricao;
                lblValor.Text = objProdutosVO.Valor_Venda.ToString();


                //dados categoria
                SisEagleVO.CategoriasVO objCategoriasVO = new SisEagleVO.CategoriasVO();
                objCategoriasVO = CategoriasBusiness.Pega_Dados_Categoria(objProdutosVO.codCategoria.ToString());

                lblCategoria.Text = objCategoriasVO.NomeCategoria;
                

                //dados estoque
                lblQtdEstoque.Text = ControleEstoqueBusiness.PegaQuantidadeEstoqueProduto(objProdutosVO.CodProduto.ToString());

                //imagem
                SisEagleVO.ImagensVO objImagensVO = new SisEagleVO.ImagensVO();

                objImagensVO = ImagensBusiness.PegaImagemProduto(lblCodigoProduto.Text);

                if (objImagensVO.Imagem.ToString().Length > 0)
                {
                    imgProduto.ImageUrl = "~/Uploads/" + objImagensVO.Imagem;
                }
                else
                {
                    imgProduto.ImageUrl = "~/Uploads/sem_imagem.jpg";
                }
                
            }
            else
            {
                //não selecionou carrinho de compra
                Response.Redirect("CarrinhoCompra.aspx");
            }

        }

        protected void btnCancelar_Click(object sender, ImageClickEventArgs e)
        {
            Response.Write("<script>window.opener.location.href='Catalogo_Produtos.aspx?codCarrinho="+ lblCodCarrinhoCompras.Text +"';self.close();</script>");
        }

        protected void txtQuantidade_TextChanged(object sender, EventArgs e)
        {
            CalculaValorTotal();
        }

        protected void CalculaValorTotal()
        {

            try
            {
                lblValorTotal.Text = (Convert.ToDecimal(lblValor.Text) * Convert.ToInt16(txtQuantidade.Text)).ToString();
            }
            catch (Exception erro)
            { 
                //erro de calculo
            }

        
        }

        protected void btnIncluir_Click(object sender, ImageClickEventArgs e)
        {

            SisEagleVO.ControleVendasVO objControleVendasVO = null;
            int erro = 0;
            int reg = 0;
            string strMensagemErro = null;

            //valida quantidade
            if (Convert.ToInt16(txtQuantidade.Text) > Convert.ToInt16(lblQtdEstoque.Text))
            {
                erro++;
                strMensagemErro = "Quantidade Incompatível com o Estoque do Produto";
            }

            if (erro > 0)
            {
                lblMensagem.Text = strMensagemErro;
            }
            else
            {
                try
                {
                    objControleVendasVO = new SisEagleVO.ControleVendasVO();

                    objControleVendasVO.codProduto = Convert.ToInt16(lblCodigoProduto.Text);
                    objControleVendasVO.Quantidade = Convert.ToInt16(txtQuantidade.Text);
                    objControleVendasVO.ValorUnitarioVenda = Convert.ToDecimal(lblValor.Text);
                    objControleVendasVO.CodCarrinhoCompras = Convert.ToInt16(lblCodCarrinhoCompras.Text);

                    reg = ControleVendasBusiness.Insert(objControleVendasVO);
                }
                catch (Exception erroInserir)
                {
                    lblMensagem.Text = "Erro encontrado: " + erroInserir.Message.ToString();
                }
                finally
                {
                    if (reg > 0)
                    {
                        //Diminue a quantidade no estoque
                        ControleEstoqueBusiness.AtualizaEstoqueProduto(lblCodigoProduto.Text, (Convert.ToInt16(lblQtdEstoque.Text) - Convert.ToInt16(txtQuantidade.Text)));


                        Response.Write("<script>alert('Produto Inserido Com Sucesso.');window.opener.location.href='Selecionar_Produtos.aspx?codCarrinho="+lblCodCarrinhoCompras.Text+"';self.close();</script>");
                    }
                }

            }





        }

        
    }
}